package com.drug.lib.base;

import android.app.Application;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;

import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;

import com.drug.lib.R;
import com.drug.lib.util.DLog;
import com.drug.lib.util.SpUtils;
import com.scwang.smart.refresh.footer.ClassicsFooter;
import com.scwang.smart.refresh.header.ClassicsHeader;
import com.scwang.smart.refresh.layout.SmartRefreshLayout;
import com.scwang.smart.refresh.layout.api.RefreshFooter;
import com.scwang.smart.refresh.layout.api.RefreshHeader;
import com.scwang.smart.refresh.layout.api.RefreshLayout;
import com.scwang.smart.refresh.layout.listener.DefaultRefreshFooterCreator;
import com.scwang.smart.refresh.layout.listener.DefaultRefreshHeaderCreator;
import com.scwang.smart.refresh.layout.listener.DefaultRefreshInitializer;
import com.tencent.mmkv.MMKV;

/**
 * 版权：周和权 版权所有
 *
 * @author zhouhequan
 * <p>
 * 创建日期：2022/6/30 or 13:08
 * 描述：
 */
public class BaseApplication extends Application {
    public static Context mContext;

    @Override
    public void onCreate() {
        super.onCreate();
        mContext = this.getApplicationContext();
        String rootDir = MMKV.initialize(this);
        DLog.d("缓存目录：" + rootDir);
        SpUtils.getInstance();
    }


    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        if (newConfig.fontScale != 1)//非默认值
            getResources();
        super.onConfigurationChanged(newConfig);
    }

    @Override
    public Resources getResources() {
        Resources res = super.getResources();
        if (res.getConfiguration().fontScale != 1) {//非默认值
            Configuration newConfig = new Configuration();
            newConfig.setToDefaults();//设置默认
            res.updateConfiguration(newConfig, res.getDisplayMetrics());
        }
        return res;
    }

    public static Context getContext() {
        return mContext;
    }


    //static 代码段可以防止内存泄露
    static {
        //设置全局默认配置（优先级最低，会被其他设置覆盖）
        SmartRefreshLayout.setDefaultRefreshInitializer(new DefaultRefreshInitializer() {
            @Override
            public void initialize(@NonNull Context context, @NonNull RefreshLayout refreshLayout) {
                //开始设置全局的基本参数（可以被下面的DefaultRefreshHeaderCreator覆盖）
                refreshLayout.setDisableContentWhenLoading(false);
                refreshLayout.setPrimaryColorsId(R.color.fastlane_background, android.R.color.white);

                refreshLayout.setDragRate(0.9f);//显示下拉高度/手指真实下拉高度=阻尼效果
//                refreshLayout.setReboundDuration(1000);//回弹动画时长（毫秒）

                refreshLayout.setEnableHeaderTranslationContent(true);//是否下拉Header的时候向下平移列表或者内容
                refreshLayout.setEnableFooterTranslationContent(true);//是否上拉Footer的时候向上平移列表或者内容

                refreshLayout.setDisableContentWhenRefresh(true);//是否在刷新的时候禁止列表的操作
                refreshLayout.setDisableContentWhenLoading(true);//是否在加载的时候禁止列表的操作

//                refreshLayout.finishRefresh(2000);//延迟3000毫秒后结束刷新
//                refreshLayout.finishLoadMore(2000);//延迟3000毫秒后结束加载
            }
        });
        //设置全局的Header构建器
        SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() {
            @Override
            public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {
                return createClassicsHeader(context);
            }
        });
        //设置全局的Footer构建器
        SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() {
            @Override
            public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) {
                //指定为经典Footer，默认是 BallPulseFooter
                return createClassicsFooter(context);
            }
        });

    }

    private static ClassicsHeader createClassicsHeader(Context context) {
        //下面示例中的值等于默认值
        ClassicsHeader header = new ClassicsHeader(context);
        header.setAccentColor(ContextCompat.getColor(context, R.color.smart_refresh_accent_color));//设置强调颜色
        header.setPrimaryColor(ContextCompat.getColor(context, R.color.smart_refresh_primary_color));//设置主题颜色
        return header;
    }


    private static ClassicsFooter createClassicsFooter(Context context) {
        //下面示例中的值等于默认值
        ClassicsFooter footer = new ClassicsFooter(context);
        footer.setAccentColor(ContextCompat.getColor(context, R.color.smart_refresh_accent_color));//设置强调颜色
        footer.setPrimaryColor(ContextCompat.getColor(context, R.color.smart_refresh_primary_color));//设置主题颜色
        return footer;
    }
}
